約 4,283,750 件
https://w.atwiki.jp/abwiki/pages/391.html
/***********************************************************ci.c -- 余弦積分************************************************************${\rm Ci}(x) = \gamma + \log x + \int_{0}^{x} \frac{\cos t - 1}{t} \, dt$ x Ci(x) 1 0.33740392290096813466 2 0.42298082877486499570 3 0.11962978600800032763 4 -0.14098169788693041164 5 -0.1900297496566438786210 -0.04545643300445537263520 0.04441982084535331654030 -0.03303241728207114377940 0.01902000789620876696250 -0.0056283863241163054402***********************************************************/Const EULER = 0.577215664901532860606512090082 /* Eulerの定数 $\gamma$ */Function Ci_series( x As Double) As Double /* 級数展開 */Dim k As LongDim s, t, us = EULER + Log(x)x = - x * x t = 1k=2While k 1000t = t * (x / ((k - 1) * k))u = s s = s + (t / k)If (s = u) ThenCi_series = sExit FunctionEnd Ifk = k + 2WendPrint "Si_series() 収束しません."Ci_series = sEnd FunctionFunction Ci_asympt(x As Double) As Double /* 漸近展開 */Dim k As Long, flag As LongDim t, f, g, fmax, fmin, gmax, gminfmax = 2 gmax = 2 fmin = 0 gmin = 0f = 0 g = 0 t = 1 / xk = 0 flag = 0while (flag 15) f = f+t k=k+1 t = t * (k / x)if (f fmax) Then fmax = f else flag = flag or 1g= g+ t k=k+1 t = t * (k / x)if (g gmax) Then gmax = g else flag = flag or 2f = f-t k=k+1 t = t * (k / x)if (f fmin) Then fmin = f else flag = flag or 4g = g-t k=k+1 t = t * (k / x)if (g gmin) Then gmin = g else flag = flag or 8WendCi_asympt = 0.5 * ((fmax + fmin) * Sin(x) - (gmax + gmin) * Cos(x))End FunctionFunction Ci(x As Double) As Doubleif (x 0) ThenCi = -Ci(-x)Exit FunctionEnd Ifif (x 18) ThenCi = Ci_series(x)Exit FunctionEnd IfCi = Ci_asympt(x)End Function#N88BASICDim x As DoublePrint (" x Ci(x)")For x = 1 To 50Print x, Ci(x)Next
https://w.atwiki.jp/startruby/pages/21.html
ブラックボックス?ステートボックス? どちらかというと設計に該当する考え方。しかし、そのコードに与える影響の強さは、フローチャート以上。 ブラックボックスやステートボックスの考え方自体は、構造化手法とそれに伴うモジュール化の時代から存在している。 ブラックボックス・テスト? ブラックボックスとは、あるクラスの公開アクセッサに注視して、そのインタフェースを明らかにすること。 じっさいのコードやオブジェクトの状態は考慮に入れないで行う。 クラス そのクラスの公開されている部分(メソッドやプロパティ等)が、外部からアクセス可能になっていること。 メソッド/プロパティ そのメソッドのIN値が明らかになっていること。 IN値に閾値があるときは、それの範囲 IN値に特値(特別な値)があるときは、その値 IN値がオブジェクトの場合:そのステートに制限があるときは、ステート IN値が対象外のときの動作が明らかになっていること。 例外の発行 単なる無動作 IN値を与えたときのOUT値が明らかになっていること。 IN値に閾値があるときは、とくにその境界値のOUT値 IN値に特値があるときは、その場合のOUT値 クラスにステートがあり、それによりOUT値が左右される場合は、ステート別のOUT値 ステートボックス・テスト? ステートボックスとは、あるクラスのオブジェクトのステートやそのクラスが他に及ぼす影響に注視して、そのステート・影響を明らかにすること。 じっさいのコードは考慮に入れないで行う。 クラス そのクラス(オブジェクト)のステートと遷移が明らかになっていること。 メソッド そのメソッドによる、クラス(オブジェクト)のステートの変更が明らかになっていること。 IN値によるステートの変化値 IN値と現ステートの組み合わせによるステートの変化値 そのメソッドによる、外部への影響が明らかになっていること。 DBやファイル等、記録媒体への影響 システム的なオブジェクトなど、自身に管理権限のない他のオブジェクトへの影響 そのメソッドでおこる、外部からの影響が明らかになっていること。 DBやファイル等、記録媒体からの影響 システム的なオブジェクトなど、自身に管理権限のない他のオブジェクトからの影響 これらのインタフェースを意識していくと しぜんに、次のような設計を心がけるようになっていく。 メソッドの引数には、なるべく閾値を設けない。設ける場合も、列挙(enum)を使うなどして閾値外にならないように工夫する。 クラスのステートは、必要最低限に構成するようになる。複数のステートが絡み複雑になる場合は、クラス分けを考え出す。 外部への影響は、なるべく排除するように考え出す。外部からの影響(変更可能性)も必要最低限へ。 TDDではどう扱うか? どうテストを書いたらいいかわからなくなった!そんな時の指針になる。 ただし、あまりガチガチに縛られないように。
https://w.atwiki.jp/abwiki/pages/477.html
2つの値を交換するには、三角代入法を使う a=b b=c c=a というやつ。 これをmemcpyを使うことでより汎用的な仕様になる。 'a,bの値を交換する。sizeにはa,bの型のサイズFunction swap(a As *Byte, b As *Byte, size As Long) As LongDim s1 As *Bytes1 = malloc(size)If s1 = NULL Then Exit Functionmemcpy(s1, a , size)memcpy(a , b , size)memcpy(b , s1, size)free(s1)swap = 1End Function#N88BASICDim s[100] As Byte, t[100] As Byte, c As LongDim i As Long, j As LongDim a As Double, b As Doublei = 444j = 78956a = -8.5b = 98.7654lstrcpy(s, "asdf")lstrcpy(t, "qwer789")Print MakeStr(s);" - "; MakeStr(t), i;" - ";j, a;" - ";b,swap(s, t, Len(s))swap(VarPtr(i), VarPtr(j), SizeOf(Long))swap(VarPtr(a), VarPtr(b), SizeOf(Double))Print MakeStr(s);" - ";MakeStr(t), i;" - ";j, a;" - ";b, 2つの値を交換する別の方法として、こにょうな方法は速度が遅く、 大量のデータを扱うには不向き。 そこでポインタを差し替える方法もあるが、 いずれにせよ値を交換することの内容なアルゴリズムを採択したいものだ。
https://w.atwiki.jp/abwiki/pages/516.html
1994年にセガの発売したヴィデオゲーム向けのコンピュータ。 セガお家芸のマルチコア、SH-2を2つ載せていた。 2倍速CDドライブを搭載していた。 サターンにはGAMEBASIC for SEGASATURN(アスキー)という開発環境、 セガサターンモデムを接続しインターネット接続も可能である。 ハードが非常に頑丈である意味で最強のマシンだった。
https://w.atwiki.jp/abwiki/pages/136.html
Common Archivers Library からCAB32.DLL 開発者 SDK v0.98をダウソしましゅ。 展開して、cab32.dllを、システムホルダに投入します。 ABのプロジェクトでウインドウにリストボックス(ID=ListBox1)とボタン(ID=CommandButton1) だけの画面を作ります。このとき、MainWndの拡張スタイルでドラッグ&ドロップを許可にします。 イカのコードをコピペします。終わり。 ----------------------------------------------------------------------------- イベント プロシージャ ----------------------------------------------------------------------------- このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。 ウィンドウ ハンドル hMainWnd TODO この位置にグローバルな変数、構造体、定数、関数を定義します。 Declare Function Cab Lib"cab32" (hwnd As HWND, cmdl As *Byte, outp As *Byte, si As DWord) As Long Const CabCmd = "-a -ml 21" Const ResFile = "平井公彦.log" Const CabFile = "平井公彦.cab" ----------------------------------------------------------------------------- ウィンドウメッセージを処理するためのコールバック関数 Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord TODO この位置にウィンドウメッセージを処理するためのコードを記述します。 イベントプロシージャの呼び出しを行います。 MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam) End Function ----------------------------------------------------------------------------- ここから下は、イベントプロシージャを記述するための領域になります。 Sub MainWnd_Destroy() Cab2_DestroyObjects() PostQuitMessage(0) End Sub ダロップ Sub MainWnd_DropFiles(hDrop As HDROP) Dim k As Long, j As Long Dim file[MAX_PATH] As Byte k = DragQueryFile(hDrop, -1,NULL,0) For j=0 To k-1 DragQueryFile(hDrop,j,file,MAX_PATH) SendMessage(GetDlgItem(hMainWnd,ListBox1), LB_ADDSTRING, 0, file) Next DragFinish(hDrop) End Sub 圧縮ボタン Sub MainWnd_CommandButton1_Click() Dim ccmd[1000] As Byte Dim re[1000] As Byte Dim f[MAX_PATH] As Byte Dim hF As HANDLE Dim w As DWord,j As Long, k As Long,l As Long レスポンスファイルを作る hF = CreateFile(ResFile, GENERIC_WRITE, 0, ByVal 0, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0) k = SendMessage(GetDlgItem(hMainWnd, ListBox1), LB_GETCOUNT,0,0) For j=0 To k-1 l = SendMessage(GetDlgItem(hMainWnd, ListBox1),LB_GETTEXT,j,f) wsprintf(ccmd, Ex"\q%s\q\r\n", f) WriteFile(hF, ccmd, lstrlen(ccmd), VarPtr(w), ByVal 0) Next CloseHandle(hF) Cab実行 wsprintf(ccmd, "%s %s @%s", CabCmd, CabFile, ResFile) Cab(hMainWnd, ccmd, re, 999) Kill ResFile MessageBox(hMainWnd, re, "mes", MB_OK) End Sub 注意 プロジェクト名をCab2にしないとコンパイルが通らないという猛烈なバグがあります。
https://w.atwiki.jp/abwiki/pages/269.html
フラットツールバーにホットイメージ機能を付け加えます。ホットイメージとは、1つのボタンに対し、通常画像と浮き上がったときの画像を持たせる機能のことです。今回は、フルカラーのボタンイメージを採用するので、なかなかの見栄えになるかと思います。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Toolbar3.zip(プロジェクトに必要なファイルがすべて入っています) 前回(ステップ25)のソースプログラムに変更を加える形で作業を進めていきます。前回からの変更箇所を太字で示しています。新規にプロジェクトを作成させる方は、プロジェクトオプションで「コモンコントロールを使用する」にチェックを入れておくのを忘れないようにしましょう。 チェックしておきたい関数は? コモンコントロールのイメージリスト機能を使用するため、ImageList_LoadImage関数を使用します。この関数は、以下のようなパラメータを持ちます。 ImageList_LoadImage( _ hi As DWord, _ インスタンスハンドル(GetModuleHandle関数で取得) lpbmp As BytePtr, _ リソース内のビットマップID cx As Long, _ ビットマップ(ボタン)の幅 cGrow As Long, _ 初期イメージを越したときに新しく割り当てるイメージの数 crMask As DWord, _ 透明色 uType As DWord, _ IMAGE_BITMAP、IMAGE_CURSOR、IMAGE_ICON のいずれかを指定 uFlags As DWord _ オプションフラグ ) As DWord ※関数が成功すると、イメージリストのハンドルが返ります。 今回はフルカラーのビットマップを読み込むため、uFlagsのオプションフラグには、LR_CREATEDIBSECTION を指定しておきます。 また、イメージリストの使用が終了したら、ImageList_Destroy関数でイメージを破棄する必要があります。 ツールバーボタンの画像を準備 今回は、2つの画像(通常時の画像と、選択時の画像)を用意します。それぞれ、右クリックで「対象をファイルに保存」を指定し、プロジェクト内に保存しておいて下さい。(以前の "toolbutton.bmp" が存在する場合は、上書きを行って下さい) toolbutton.bmp、toolbutton_hot.bmp ToolbarプロジェクトのBitmapリソースにこの2つのファイルを挿入します。"toolbutton.bmp" のIDを IDB_BITMAP1 に、"toolbutton_hot.bmp" のIDを IDB_BITMAP2 にセットしておきます。 新規にプロジェクトを作成している方は、ステップ24を参考に、メニュー("MainMenu")の作成をしておきましょう。 コーディング "MainWnd.sbp" を開き、以下のプログラムをコーディングしていきましょう。 ---------------------------------------------------------------------------- イベント プロシージャ ---------------------------------------------------------------------------- このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。 ウィンドウ ハンドル hMainWnd メモ - 以下の領域を、変数、構造体、定数、関数を宣言するための、 グローバル領域として利用することができます。 ----------------------------------ここから---------------------------------- Const ID_TOOLBAR = 70 ツールバーのID Dim hImageList As DWord イメージリストのハンドル Sub SetTbButtonData(ByRef ptb As TBBUTTON, iBitmap As Long, idCommand As Long, fsState As Byte, fsStyle As Byte) ptb(TBBUTTON構造体)にボタン情報を格納する With ptb .iBitmap=iBitmap .idCommand=idCommand .fsState=fsState .fsStyle=fsStyle .dwData=0 .iString=0 End With End Sub ----------------------------------ここまで---------------------------------- ↑先頭部分では、イメージリストのハンドルを保存するためのhImageList変数を定義します。 Sub MainWnd_Destroy() イメージリストを破棄 ImageList_Destroy(hImageList) Toolbar_DestroyObjects() PostQuitMessage(0) End Sub ↑Destroyイベントでは、ImageList_Destroy関数を使用してイメージリストを破棄します。 Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT) Dim ic As INITCOMMONCONTROLSEX Dim tbb[4] As TBBUTTON Dim style As Long Dim hToolbar As DWord コモンコントロールの初期化 ic.dwSize=Len(ic) ic.dwICC=ICC_BAR_CLASSES InitCommonControlsEx(ic) ボタン情報をセット SetTbButtonData(tbb[0],0,IDM_NEW,TBSTATE_ENABLED,TBSTYLE_BUTTON) SetTbButtonData(tbb[1],1,IDM_OPEN,TBSTATE_ENABLED,TBSTYLE_BUTTON) SetTbButtonData(tbb[2],2,IDM_SAVE,TBSTATE_ENABLED,TBSTYLE_BUTTON) SetTbButtonData(tbb[3],0,0,TBSTATE_ENABLED,TBSTYLE_SEP) SetTbButtonData(tbb[4],3,IDM_ABOUT,TBSTATE_ENABLED,TBSTYLE_BUTTON) ツールバーを生成 hToolbar=CreateToolbarEx(hMainWnd, _ WS_CHILD or WS_VISIBLE, _ ID_TOOLBAR, _ 4, _ GetModuleHandle(0), _ IDB_BITMAP1, _ tbb, _ 5, _ 0,0, _ 16,15, _ Len(tbb[0])) ウィンドウスタイルにTBSTYLE_FLATを追加 style=GetWindowLong(hToolbar,GWL_STYLE) style=style or TBSTYLE_FLAT SetWindowLong(hToolbar,GWL_STYLE,style) イメージリストを作成(フルカラー) hImageList=ImageList_LoadImage(GetModuleHandle(0), _ IDB_BITMAP2, _ 16, 0, RGB(192,192,192), _ IMAGE_BITMAP,LR_CREATEDIBSECTION) ホットイメージを設定 SendMessage(hToolbar, TB_SETHOTIMAGELIST, 0, hImageList) End Sub ↑Createイベントでは、作成したイメージリストをホットイメージとしてツールバーに割り当てています。割り当てには、TB_SETHOTIMAGELIST メッセージを使用します。TB_SETHOTIMAGELIST メッセージでは、wParamは無視され、lParamにイメージリストのハンドルを指定します。 Sub MainWnd_IDM_NEW_MenuClick() MessageBox(hMainWnd, "新規作成", "Test of Toolbar", MB_OK) End Sub Sub MainWnd_IDM_OPEN_MenuClick() MessageBox(hMainWnd, "開く", "Test of Toolbar", MB_OK) End Sub Sub MainWnd_IDM_SAVE_MenuClick() MessageBox(hMainWnd, "保存", "Test of Toolbar", MB_OK) End Sub Sub MainWnd_IDM_EXIT_MenuClick() SendMessage(hMainWnd,WM_CLOSE,0,0) End Sub Sub MainWnd_IDM_ABOUT_MenuClick() MessageBox(hMainWnd, "ツールバーテスト Ver1.0", "バージョン情報", MB_OK) End Sub ↑これらのダミーメッセージに変更点はありません。 これで作業は完了です。自分のアプリケーションで色鮮やかなツールバーが踊るのは悪い気分ではありませんね☆
https://w.atwiki.jp/abwiki/pages/353.html
マルチプルインスタンスとは 疑りぶかいあなたのためのオブジェクト指向再入門 を100回読んでください。 要するにオブジェクトをいっぱい作ることが出来るわけです。 例えばウインドウを操作するWINDOWSUKIクラスを作ればウインドウが3つあればこのクラスを3つ宣言すれば良いのです。 ドラクエの戦闘システムなら戦うキャラクラスを作ればそれで参加する人数分宣言すればいいわけなんですが、 うまく作らないとあとあと大変な事になります。 Class AKB48Privatename As String'名前hp As Long'HPpp As Long'攻撃力Public'コンストラクタSub AKB48(aname As String, ahp As Long, app As Long)name = anamehp = ahppp = appEnd Sub'相手を殴るSub Naguru(ByRef aite As AKB48)Print name;"の攻撃!";aite.Nagurareru(pp*Rnd() + pp/2)End Sub'相手に殴られるSub Nagurareru(app As Long)hp = hp - appPrint name;"は";app;"のダメージをうけた!"If hp = 0 Then Print name;"は負けてしまった!"End Sub'生きているかどうか?Function Seisi() As LongIf hp 0 Then Seisi = TRUEEnd FunctionEnd Class#N88BASICDim itano As AKB48("板野友美さん", 100, 20)Dim sinoda As AKB48("篠田麻里子さん", 150, 16)While itano.Seisi() And sinoda.Seisi()itano.Naguru(sinoda)sinoda.Naguru(itano)Wend このプログは2人の戦士が相手が死ぬまで殴り合いをさせるものです。 1つのクラスから2つのオブジェクトを作っています。クラスを使うと便利ですね。 構造体ではもうすこし大変な書き方になりますね。 とくに問題がなく動いているように思う人はABプログラマの素質があります。 問題点が指摘出来る人はさようなら。とっととABを捨ててJAVAに移行してください。
https://w.atwiki.jp/abwiki/pages/372.html
乱数にXorShiftを使ったじゃんけんゲーム。 Dim XorSeed[3] As DWord'乱数初期化Sub sxor128() As DWordDim s As DWordDim n As DWords = GetTickCount()For n=0 To 3s = 1812433253 * (s Xor (s 30)) + nXorSeed[n] = sNextEnd Sub'乱数発生Function xor128() As DWordDim t As DWordt = (XorSeed[0] Xor (XorSeed[0] 11))XorSeed[0] = XorSeed[1] XorSeed[1] = XorSeed[2] XorSeed[2] = XorSeed[3]XorSeed[3] = (XorSeed[3] Xor (XorSeed[3] 19)) Xor (t Xor (t 8))xor128 = XorSeed[3]End Function#N88BASICEnumGU = 0TYOKIPAAEnd EnumDim HandNameStr[2] = ["ぐう", "ちょき", "ぱあ"] As *ByteDim JudgeNameStr[2] = ["あいこ", "勝ち", "負け"] As *ByteFunction NumbarToHandName(nu As Long) As StringNumbarToHandName = HandNameStr[nu]End FunctionFunction NumbarToJudgeName(nu As Long) As StringNumbarToJudgeName = JudgeNameStr[nu]End FunctionFunction Judge(a As DWord, b As DWord) As DWordIf a = b Then Judge = 0If (a = GU And b = TYOKI) Or (a = TYOKI And b = PAA) Or (a = PAA And b = GU) Then Judge = 1If (a = GU And b = PAA) Or (a = TYOKI And b = GU) Or (a = PAA And b = TYOKI) Then Judge = 2End FunctionDim pc As DWord'コンピュータの手Dim usr As DWord'ユーザーの手sxor128()Print "じゃんけんゲーム"*LABEL1Input "ぐう=0, ちょき=1, ぱあ=2を入力。";usrIf usr GU And usr TYOKI And usr PAA Then *LABEL1pc = xor128() Mod 3 As DWordPrint "あなたの手=";NumbarToHandName(usr),"コンピュータの手=";NumbarToHandName(pc)Print NumbarToJudgeName(Judge(usr, pc))Print ""Goto *LABEL1
https://w.atwiki.jp/abwiki/pages/352.html
前回は簡単なクラスをつくってみますた。ファイルを読み込むだけのABFILEクラスです。 でもおこんなものなーんの役にもたちゃしねえわけです。 さて今回お話するのはコンストラクタとデストラクタです。 コンストラクタを笑うものはデストラクタに泣くという格言があるくらい重要なパートです。 こいつを理解するとオブジェクト指向なんて小難しいことは知らなくて構いません。 そもそもABでオブジェクト指向しようなんてのが土台無理な話なのです。 ABは大規模いや中規模開発すら大変なクソ言語です。 正直ファイルの分割なんてあって無いようなものだしスコープに対する静的オブジェクトも作れないし。 他の言語でつくられたモジュールとの連携も多大な制約を受け、 もしオブジェクト指向を勉強したいなら他の言語でやってくれ。と声を大にして言いたい。 ABなんぞホビーで使う言語であり、それに特化しているのだから。 コンストラクタ(構築子、コントラ)はオブジェクトのインスタンスが生成されたときに呼ばれる関数です。 デストラクタ(消滅子、消去子、デコトラ)は、オブジェクトが破棄されるときに呼ばれる関数です。 ここで?マークだらけになった人は見込みがあります。 もしすんなり理解できた人はABプログラマとしての素質はありません。すぐJAVAに移行してください。 クラスはあくまで型です。オブジェクトはその型の物(対象)です。インスタンスと言うのは実体です。 Dim f As ABFILE オブジェクトfはABFILEという型ですよ。また実体を持っていますよ Dim p As *ABFILE オブジェクトpはABFILEという型を指しますよ。でも実体は用意されていません。 p = New ABFILE pはABFILE型の実体を指しますよ。 DLLを作ったことのある人はDllMainという関数を知っているでしょう。 そのなかにDLL_PROCESS_ATTACHという条件があります。まさにこれこそがコンストラクタです。 デストラクタはその逆でDLL_PROCESS_DETACHされたときのことです。 Class ABFILEPrivatehF As HANDLEPublic'コンストラクタ!Sub ABFILE()'何もしない、することがないEnd Sub'デストラクタSub ~ABFILE()mClose()'閉じ忘れ対策End SubFunction mOpen(filename As String) As LongIf hF Then mClose()hF = CreateFile(StrPtr(filename), GENERIC_READ, 0, ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)If hF = INVALID_HANDLE_VALUE Then hF = NULLEnd IfmOpen = hFEnd FunctionFunction mRead(buffer As VoidPtr, length As DWord) As DWordIf hF = NULL Then Exit FunctionReadFile(hF, buffer, length, VarPtr(mRead), ByVal 0)SetByte(buffer As *Byte + mRead, 0)End FunctionFunction mClose() As LongIf hF Then CloseHandle(hF)hF = NULLPrint "ファイル閉じたよ"End FunctionEnd Class#N88BASICDim f As ABFILEDim buf[555] As Bytef.mOpen("555.abp")While f.mRead(buf, 555)Print MakeStr(buf);Wend 前回のプログにコンストラクタとデストラクタを書いてみました。 コンストラクタは何もしません。もし書かなくてもこのように何もしないコンストラクタは暗黙的に定義されます。 デストラクタも何もしないものが暗黙的に宣言されます。 またコンストラクタやデストラクタは返り血が無いのでエラーに成っても適切に処理できるように工夫しなければいけません。
https://w.atwiki.jp/lspdfrinfo/pages/74.html
Basic Vehicle Actions Basic Vehicle Actions(以下、BVA)は、Lt.Caine氏によって制作された基本的な車両の動きができるようになるもので、ELSと同じようにメインディレクトリに導入するもののため、LSPDFRもRPHも必要なく、SHVだけで動作する。 ウインカ-やシートベルト、ドアを開けたまま・エンジンを付けたまま車から出入りなどができるほか、 設定が細かくできるため使いやすく、シートベルトやウインカーにも音が付いている。 ダウンロードはこちら 必須 ScriptHook V ┗ 別ダウンロード必須 インストール方法 1. ダウンロードしたファイルを解凍する 2. 解凍したフォルダの中の、INSTLLATION FILES/Grand Theft Auto V 内にある、 BVA.asi、BVA.iniをメインディレクトリにドラッグ&ドロップして完了。 操作方法 注意 これは、デフォルトのキー配置です。 エンジンを付けたままドアを開けて車から降りるキー ゲーム内で設定した車両降車キー エンジンを付けたままドアを閉めて車から降りるキー ゲーム内で設定した車両降車キーを長押し エンジンのオンオフを切り替えるキー キーボード「0」キー 右ウインカーをつけるキー 「.」キー 左ウインカーをつけるキー 「,」キー ハザードをつけるキー ?キー長押し シートベルトをつけるキー シフトキー+Bキー 車に乗った状態で席を移動するキー シフトキー+Xキー 近くにある車の助手席(後部も可)に乗るキー シフトキー+ゲーム内で設定した車両降車キー パーキングモードを有効にするキー Gキー 注意! パーキングモードはデフォルトで無効になっています。 BVA.ini [ GENERAL ] ExitTypShrt = 0 ExitTypLong = 1 ゲーム内で設定した車両降車キーを押したときに車から降りる際にできるアクションの設定。上が短く押し、下が長押し。 「0」はエンジンを付けたままドアを開けて車から降りる 「1」はエンジンを付けたままドアを閉めて車から降りる 「2」はエンジンを消してドアを閉めて車から降りる なので「ExitTypShrt」の「0」を「2」にすると、ゲーム内で設定した車両降車キーを短く押したときにエンジンを消してドアを閉めて車から降りることができるようになる。デフォルトは「0」と「1」。 BrakeLights = on 車両が停車中にブレーキランプが常に付くようになるかの設定。デフォルトはon。 ParkingMode = off パーキングモードが使用できるかどうかの設定。デフォルトはoff。コントローラーだとバグってしまうためらしい。 IndicFunctn = on ウインカーおよびハザードライトを使用できるかの設定。デフォルトはon。 AutoSeatBlt = off 自動でシートベルトをつけるかの設定。デフォルトはoff。 [ CONTROL ] キーバインドはキーコードで制御している。 ToggleEngn = 48 エンジンのオンオフを切り替えるキー。デフォルトはキーボード0キー。 TogglePark = 71 パーキングモードのオンオフを切り替えるキー。デフォルトはGキー。 IndicatorR = 190 右ウインカー切り替えキー。デフォルトは「.」キー。 IndicatorL = 188 左ウインカー切り替えキー。デフォルトは「,」キー。 ToggleHzrd = 191 ハザード切り替えキー。デフォルトは「?」キー。 TogSeatBlt = 66 ShufflSeat = 88 シートベルトをつけるキーと修飾キー。デフォルトはシフトキー+Bキー。